Skip to content

[26.04_linux-nvidia] Backport: HID: asus: support the Zenbook A16 (UX3607OA) keyboard - #637

Closed
kbutala-nv wants to merge 1 commit into
NVIDIA:26.04_linux-nvidiafrom
kbutala-nv:fn-keys
Closed

kbutala-nv wants to merge 1 commit into
NVIDIA:26.04_linux-nvidiafrom
kbutala-nv:fn-keys

Conversation

@kbutala-nv

@kbutala-nv kbutala-nv commented Oct 8, 2026 •

Copy link
Copy Markdown

LP: https://bugs.launchpad.net/bugs/2170055

The ASUS Zenbook A16 (UX3607OA), a Qualcomm Snapdragon X2 Elite Extreme (Glymur)-based laptop, carries its main keyboard on an I2C-HID device with the ID 0B05:4B42. Its Fn/media hotkeys are emitted as vendor-page (HID_UP_ASUSVENDOR) usages on report 0x5A.

Match the device in hid-asus with the standard I2C keyboard quirks and add the three usage mappings observed on the hardware:

0x85 -> KEY_CAMERA (Fn+F11, camera toggle)
0x86 -> KEY_PROG1 (Fn+F12, MyASUS key)
0x5f -> KEY_PROG2 (extra programmable key)

The camera-toggle key reports its usage (0x85) together with a companion state byte in the same array report ("5a 85 01" / "5a 85 10"). The 0x10 companion aliases the brightness-down vendor usage and spuriously dims the panel, so add QUIRK_FILTER_CAMERA_COMPANION to zero the companion slots for this device before input mapping. The quirk is device-gated so no other ASUS model is affected.

(cherry picked from commit 2061075)

This change is needed for internal bug 6894048

The ASUS Zenbook A16 (UX3607OA), a Qualcomm Snapdragon X2 Elite Extreme
(Glymur)-based laptop, carries its main keyboard on an I2C-HID device
with the ID 0B05:4B42. Its Fn/media hotkeys are emitted as vendor-page
(HID_UP_ASUSVENDOR) usages on report 0x5A.

Match the device in hid-asus with the standard I2C keyboard quirks and
add the three usage mappings observed on the hardware:

  0x85 -> KEY_CAMERA  (Fn+F11, camera toggle)
  0x86 -> KEY_PROG1   (Fn+F12, MyASUS key)
  0x5f -> KEY_PROG2   (extra programmable key)

The camera-toggle key reports its usage (0x85) together with a companion
state byte in the same array report ("5a 85 01" / "5a 85 10"). The 0x10
companion aliases the brightness-down vendor usage and spuriously dims
the panel, so add QUIRK_FILTER_CAMERA_COMPANION to zero the companion
slots for this device before input mapping. The quirk is device-gated so
no other ASUS model is affected.

Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
(cherry picked from commit 2061075)
Signed-off-by: Kaushal Rajeev Butala <kbutala@nvidia.com>
@nirmoy nirmoy added the help wanted Extra attention is needed label Oct 8, 2026
@nirmoy

nirmoy commented Oct 8, 2026 •

Copy link
Copy Markdown
Collaborator

BaseOS Kernel Review

Tip

✅ Review passed

No issues found across the reviewed commits.

Findings: none

🔍 Review artifacts

📦 Build checks — 🟢 4/4 passed

Note

Build reports and debs are retained for 10 days after the PR closes.

  • ⚪ PR explanation: inactive
Review metadata
  • Reviewed head: ec86fe24abde
  • Overall status: kernel validation regression
  • Build checks: 4/4 passed

This comment is maintained by BaseOS Reviewer and updated when the GitHub watcher publishes a newer review.

@github-actions

github-actions Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

PR Validation Report

Patchscan ✅ No Missing Fixes

All cherry-picked commits checked — no missing upstream fixes found.

PR Lint ❌ Errors found

Details
Checking 1 commits...

Cherry-pick digest:
E: ec86fe24abde ("HID: asus: support the Zenbook A16 (UX36"): patch-ID mismatch with upstream 206107536018
┌──────────────┬──────────────────────────────────────────────────────────────────┬────────────┬─────────┬───────────────────────────┐
│ Local        │ Referenced upstream / Patch subject                              │ Patch-ID   │ Subject │ SoB chain                 │
├──────────────┼──────────────────────────────────────────────────────────────────┼────────────┼─────────┼───────────────────────────┤
│ ec86fe24abde │ 206107536018 HID: asus: support the Zenbook A16 (UX3607OA) keybo │ MISMATCH   │ match   │ preserved + kbutala added │
└──────────────┴──────────────────────────────────────────────────────────────────┴────────────┴─────────┴───────────────────────────┘

Lint: all checks passed.

@nirmoy

nirmoy commented Oct 8, 2026 •

Copy link
Copy Markdown
Collaborator
Acked-by: Nirmoy Das <nirmoyd@nvidia.com>

Please add Launchpad #2170055 as the first line of the PR description.

@kbutala-nv

Copy link
Copy Markdown
Author
Acked-by: Nirmoy Das <nirmoyd@nvidia.com>

Please add Launchpad #2170055 as the first line of the PR description.

Done!

@clsotog

clsotog commented Oct 8, 2026

Copy link
Copy Markdown
Collaborator

Acked-by: Carol L Soto <csoto@nvidia.com>

@nirmoy nirmoy added has_2_acks and removed help wanted Extra attention is needed has_1_ack labels Oct 8, 2026
@nvmochs

nvmochs commented Oct 8, 2026

Copy link
Copy Markdown
Collaborator

Merged, closing PR.

7e692c3b8b68 HID: asus: support the Zenbook A16 (UX3607OA) keyboard

@nvmochs nvmochs closed this Oct 8, 2026
arighi pushed a commit to arighi/NV-Kernels that referenced this pull request Oct 14, 2026
BugLink: https://bugs.launchpad.net/bugs/2165189

commit 38498c0 upstream.

Adding the u32 excl field at offset 32 of struct bpf_map right after the
sha[SHA256_DIGEST_SIZE] hash shifts the ops pointer from offset 32 to 40.
Therefore, fix up the test case.

  # LDLIBS=-static PKG_CONFIG='pkg-config --static' ./vmtest.sh -- ./test_progs -t verifier_map_ptr
  [...]
  NVIDIA#637/1   verifier_map_ptr/bpf_map_ptr: read with negative offset rejected:OK
  NVIDIA#637/2   verifier_map_ptr/bpf_map_ptr: read with negative offset rejected @unpriv:OK
  NVIDIA#637/3   verifier_map_ptr/bpf_map_ptr: write rejected:OK
  NVIDIA#637/4   verifier_map_ptr/bpf_map_ptr: write rejected @unpriv:OK
  NVIDIA#637/5   verifier_map_ptr/bpf_map_ptr: read non-existent field rejected:OK
  NVIDIA#637/6   verifier_map_ptr/bpf_map_ptr: read non-existent field rejected @unpriv:OK
  NVIDIA#637/7   verifier_map_ptr/bpf_map_ptr: read ops field accepted:OK
  NVIDIA#637/8   verifier_map_ptr/bpf_map_ptr: read ops field accepted @unpriv:OK
  [...]
  Summary: 2/18 PASSED, 0 SKIPPED, 0 FAILED

Signed-off-by: KP Singh <kpsingh@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/r/20260601150248.394863-7-daniel@iogearbox.net
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Shung-Hsi Yu <shung-hsi.yu@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Alice C. Munduruca <alice.munduruca@canonical.com>
Signed-off-by: Edoardo Canepa <edoardo.canepa@canonical.com>
arighi pushed a commit to arighi/NV-Kernels that referenced this pull request Oct 14, 2026
BugLink: https://bugs.launchpad.net/bugs/2165189

commit 082c412 upstream.

sashiko complained that 38498c0 ("selftests/bpf: Adjust verifier_map_ptr
for the map's excl field") would slightly decrease the test coverage given
before the test was against the verifier rejecting the ops pointer. Recover
the old test with the right offsets and add the existing one as an additional
test case.

  # LDLIBS=-static PKG_CONFIG='pkg-config --static' ./vmtest.sh -- ./test_progs -t verifier_map_ptr
  [    1.672932] bpf_testmod: module verification failed: signature and/or required key missing - tainting kernel
  NVIDIA#637/1   verifier_map_ptr/bpf_map_ptr: read with negative offset rejected:OK
  NVIDIA#637/2   verifier_map_ptr/bpf_map_ptr: read with negative offset rejected @unpriv:OK
  NVIDIA#637/3   verifier_map_ptr/bpf_map_ptr: write rejected:OK
  NVIDIA#637/4   verifier_map_ptr/bpf_map_ptr: write rejected @unpriv:OK
  NVIDIA#637/5   verifier_map_ptr/bpf_map_ptr: read non-existent field rejected:OK
  NVIDIA#637/6   verifier_map_ptr/bpf_map_ptr: read non-existent field rejected @unpriv:OK
  NVIDIA#637/7   verifier_map_ptr/bpf_map_ptr: read beyond excl field rejected:OK
  NVIDIA#637/8   verifier_map_ptr/bpf_map_ptr: read beyond excl field rejected @unpriv:OK
  NVIDIA#637/9   verifier_map_ptr/bpf_map_ptr: read ops field accepted:OK
  NVIDIA#637/10  verifier_map_ptr/bpf_map_ptr: read ops field accepted @unpriv:OK
  NVIDIA#637/11  verifier_map_ptr/bpf_map_ptr: r = 0, map_ptr = map_ptr + r:OK
  NVIDIA#637/12  verifier_map_ptr/bpf_map_ptr: r = 0, map_ptr = map_ptr + r @unpriv:OK
  NVIDIA#637/13  verifier_map_ptr/bpf_map_ptr: r = 0, r = r + map_ptr:OK
  NVIDIA#637/14  verifier_map_ptr/bpf_map_ptr: r = 0, r = r + map_ptr @unpriv:OK
  NVIDIA#637     verifier_map_ptr:OK
  [...]
  Summary: 2/20 PASSED, 0 SKIPPED, 0 FAILED

Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Link: https://lore.kernel.org/r/20260602133052.423725-4-daniel@iogearbox.net
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Shung-Hsi Yu <shung-hsi.yu@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Alice C. Munduruca <alice.munduruca@canonical.com>
Signed-off-by: Edoardo Canepa <edoardo.canepa@canonical.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants